package com.hcs.life;

import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;

import java.util.ArrayList;
import java.util.List;

public class LotteryLife {
    public static final List<Integer> FRONT_AREA = new ArrayList<Integer>() {
        {
            add(1);
            add(19);
            add(2);
            add(20);
            add(3);
            add(21);
            add(4);
            add(22);
            add(5);
            add(23);
            add(6);
            add(24);
            add(7);
            add(25);
            add(8);
            add(26);
            add(9);
            add(27);
            add(10);
            add(28);
            add(11);
            add(29);
            add(12);
            add(30);
            add(13);
            add(31);
            add(14);
            add(32);
            add(15);
            add(33);
            add(16);
            add(34);
            add(17);
            add(35);
            add(18);
        }
    };

    public static final List<Integer> BACK_AREA = new ArrayList<Integer>() {
        {
            add(1);
            add(7);
            add(2);
            add(8);
            add(3);
            add(9);
            add(4);
            add(10);
            add(5);
            add(11);
            add(6);
            add(12);
        }
    };

    public static void main(String[] args) {
        List<Integer> front_exclude = new ArrayList<Integer>(){{addAll(ListUtil.of(5, 12, 18, 23, 35, 4, 10, 15, 20, 34, 8, 16, 24, 26, 29));}};
        List<Integer> back_exclude = new ArrayList<Integer>(){{addAll(ListUtil.of(3, 8, 4, 7, 9, 11, 2, 6));}};
        for (int i = 0; i < 3; i++) {
            getValue(front_exclude, back_exclude, false);
        }
    }

    public static void getValue(List<Integer> front_exclude, List<Integer> back_exclude, boolean cover) {
        List<Integer> temp_front_area = new ArrayList<>();
        List<Integer> temp_back_area = new ArrayList<>();
        for (int i = 0; i < FRONT_AREA.size(); i++) {
            if (!front_exclude.contains(FRONT_AREA.get(i))) {
                temp_front_area.add(FRONT_AREA.get(i));
            }
        }
        for (int i = 0; i < BACK_AREA.size(); i++) {
            if (!back_exclude.contains(BACK_AREA.get(i))) {
                temp_back_area.add(BACK_AREA.get(i));
            }
        }
        List<Integer> value_front_area = new ArrayList<>();
        List<Integer> value_back_area = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            int value = temp_front_area.get(RandomUtil.randomInt(temp_front_area.size()));
            while (value_front_area.contains(value)) {
                value = temp_front_area.get(RandomUtil.randomInt(temp_front_area.size()));
                ThreadUtil.sleep(RandomUtil.randomInt(100));
            }
            if (cover) {
                front_exclude.add(value);
            }

            value_front_area.add(value);
        }
        for (int i = 0; i < 2; i++) {
            int value = temp_back_area.get(RandomUtil.randomInt(temp_back_area.size()));
            while (value_back_area.contains(value)) {
                value = temp_back_area.get(RandomUtil.randomInt(temp_back_area.size()));
                ThreadUtil.sleep(RandomUtil.randomInt(100));
            }
            if (cover) {
                back_exclude.add(value);
            }
            value_back_area.add(value);
        }
        value_front_area.stream().sorted().forEach(item -> System.out.print(StrUtil.padPre(String.valueOf(item), 2, '0') + " "));
        System.out.print(", ");
        value_back_area.stream().sorted().forEach(item -> System.out.print(StrUtil.padPre(String.valueOf(item), 2, '0') + " "));
        System.out.println();
    }
}
